home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1998 September / Macworld (1998-09).dmg / Shareware World / Info / For Developers / MacZoop 1.8.3 / Required Classes / Z Headers / MacZoop.h < prev    next >
Text File  |  1998-07-10  |  7KB  |  203 lines

  1. /*************************************************************************************************
  2. *
  3. *
  4. *            MacZoop - "the framework for the rest of us"         
  5. *
  6. *
  7. *
  8. *            MacZoop.h            -- standard defines and globals, always present. You can
  9. *                                    precompile this if you want.
  10. *
  11. *
  12. *            © 1996, Graham Cox
  13. *
  14. *
  15. *
  16. *
  17. *************************************************************************************************/
  18.  
  19.  
  20. #pragma once
  21.  
  22. #ifndef __MACZOOP__
  23. #define    __MACZOOP__
  24.  
  25. #include    <QDOffscreen.h>
  26. #include    <CodeFragments.h>
  27. #include    <drag.h>
  28. #include    <AppleEvents.h>
  29. #include    <Quickdraw.h>
  30. #include    <Gestalt.h>
  31. #include    <sound.h>
  32.  
  33. #include    "ZDefines.h"
  34. #include    "ZErrors.h"
  35. #include    "ZApplication.h"
  36. #include    "ZWindowManager.h"
  37. #include    "ZClipboard.h"
  38. #include    "ZMenuBar.h"
  39. #include    "CursorUtilities.h"
  40.  
  41. // backward compatibility:
  42. // MacZoop 1.8.2 and later require Universal Headers 3.0.1. However, older headers can be
  43. // used since we hereby conditionally include a compatibility file which defines some of the
  44. // newer constants
  45.  
  46. #ifndef __COMPATIBILITY__
  47. #if UNIVERSAL_INTERFACES_VERSION < 0x0301
  48. #include    "Compatibility.h"
  49. #endif
  50. #endif
  51.  
  52. //----------------------------------------------------------------------------------------------
  53.  
  54. // Streaming support:
  55.  
  56. // If you want streaming support in your application, turn ON the following. Streaming requires
  57. // the inclusion of numerous additional files to your project. For compatibility with earlier
  58. // versions, the default is currently OFF. This may change in future versions. Most standard
  59. // MacZoop classes now support streaming.
  60.  
  61. #define    _MACZOOP_STREAMS    0
  62.  
  63. #if _MACZOOP_STREAMS
  64. #include    "ZClassRegistry.h"
  65. #include    "ZStream.h"
  66. #endif
  67.  
  68. //----------------------------------------------------------------------------------------------
  69.  
  70. // Debugging:
  71.  
  72. // To assist debugging apps, you can turn on this flag. It affects the way that ASSERT is
  73. // compiled- either to nothing (production), or to a diagnostic exception (debug)
  74.  
  75. #define    _DEBUG_                0
  76.  
  77.  
  78. /************************************************************************************************/
  79.  
  80. // MacZoop reserves commands numbered 1-127 for the standard menu commands such as
  81. // New, Open, Quit, Cut, Paste, etc. Your own commands should be numbered 128 and higher. You
  82. // can use any command you wish for any purpose- MacZoop is ignorant of meanings attached to
  83. // command numbers themselves. Since the command mapping tables are built on the fly at start-up,
  84. // you are free to reorganise the menus however you want to suit your application- MacZoop will
  85. // handle any standard commands present in the default manner, but doesn't care if they're not
  86. // there, etc. This allows great flexibility in organising your application. Caveat: don't add
  87. // items to the Apple Menu unless you are prepared to override the standard command handling.
  88.  
  89.  
  90. // Standard commands:
  91.  
  92. enum
  93. {
  94.     kNoCmd = 0,                    // 0    - no command (send menuID and itemID instead)
  95.     kCmdAbout = 1,                // 1    - display the about box
  96.     kCmdNew,                    // 2    - make a new document or window
  97.     kCmdOpen,                    // 3    - display the open file dialog
  98.     kCmdClose,                    // 4    - close the active window
  99.     kCmdCloseAll,                // 5    - close all windows
  100.     kCmdSave,                    // 6    - save the active window to disk
  101.     kCmdSaveAs,                    // 7    - display the save dialog
  102.     kCmdRevert,                    // 8    - revert the active window to its previous saved version
  103.     kCmdPageSetup,                // 9    - display the page setup dialog
  104.     kCmdPrint,                    // 10    - display the print dialog and print the contents of the active window
  105.     kCmdQuit,                    // 11    - quit the application
  106.     kCmdUndo,                    // 12    - undo the last task
  107.     kCmdCut,                    // 13    - cut the selected item to the clipboard
  108.     kCmdCopy,                    // 14    - copy the selected item to the clipboard
  109.     kCmdPaste,                    // 15    - paste the clipboard contents
  110.     kCmdClear,                    // 16    - clear the selected item
  111.     kCmdSelectAll,                // 17    - select everything in the active window
  112.     kCmdSelectNone,                // 18    - select nothing in the active window
  113.     kCmdPlainText,                // 19    - set plain text
  114.     kCmdBoldText,                // 20    - set bold text
  115.     kCmdItalicText,                // 21    - set italic text
  116.     kCmdUnderlineText,            // 22    - set underlined text
  117.     kCmdOutlineText,            // 23    - set outlined text
  118.     kCmdShadowText,                // 24    - set shadowed text
  119.     kCmdCondensedText,            // 25    - set condensed text
  120.     kCmdExtendedText,            // 26    - set extended text
  121.     kCmdShowHideClipboard,        // 27    - show or hide the clipboard window
  122.     kCmdDoPreferences,            // 28    - open the prefs dialog, if any
  123.     kCmdSaveACopy,                // 29    - save a copy of the current file
  124.     kCmdPrintOneCopy            // 30    - print a singlke copy of the current document
  125. };
  126.  
  127. // std commands for font size menu:
  128.  
  129. enum
  130. {
  131.     kStdFontSizeBase = 100,        // 100    - can be subtracted from font size command to yield actual size
  132.     kCmdStdFontSizeOther,        // 101    - indicated "Other" font size- display font size dialog.
  133.     kCmdStdFontSize7 = 107,        // 107    - font size 7
  134.     kCmdStdFontSize9 = 109,        // 109    - font size 9
  135.     kCmdStdFontSize10,            // 110    - font size 10
  136.     kCmdStdFontSize12 = 112,    // 112    - font size 12
  137.     kCmdStdFontSize14 = 114,    // 114    - font size 14
  138.     kCmdStdFontSize18 = 118,    // 118    - font size 18
  139.     kCmdStdFontSize24 = 124,    // 124    - font size 24
  140.     kCmdStdFontSize36 = 136,    // 136    - font size 36
  141.     kCmdStdFontSize48 = 148,    // 148    - font size 48
  142.     kCmdStdFontSize60 = 160,    // 160    - font size 60
  143.     kCmdStdFontSize72 = 172        // 172    - font size 72
  144. };
  145.  
  146. // std commands for a putative "colour" menu:
  147.  
  148. enum
  149. {
  150.     kCmdSetColourBlack = 40,    // 40    - set colour to black
  151.     kCmdSetColourWhite,            // 41    - set colour to white
  152.     kCmdSetColourRed,            // 42    - red
  153.     kCmdSetColourGreen,            // 43    - green
  154.     kCmdSetColourBlue,            // 44    - blue
  155.     kCmdSetColourCyan,            // 45    - cyan
  156.     kCmdSetColourMagenta,        // 46    - magenta
  157.     kCmdSetColourYellow            // 47    - yellow
  158. };
  159.  
  160. class    ZPrefsFile;
  161.  
  162. // Global objects accessible from all classes:
  163.  
  164. extern    ZApplication*        gApplication;        // the application object
  165. extern    ZWindowManager*        gWindowManager;        // the window manager object
  166. extern    ZMenuBar*            gMenuBar;            // the main menubar object
  167. extern    ZClipboard*            gClipboard;            // the clipboard object
  168. extern    ZPrefsFile*            gPrefsFile;            // the prefs file, if any
  169.  
  170. // Other globals
  171.  
  172. extern    OSType                gAppSignature;        // creator type of this application    
  173. extern    Boolean                gIsAColourMac;        // TRUE if we have any form of colour QD
  174. extern    tMacInfo            gMacInfo;            // other common gestalt results    
  175.  
  176. extern    RgnHandle            gUtilRgn;            // handy temporary region for general use
  177.  
  178. // static code called to kick the whole thing into life:
  179.  
  180. void    RunApplication();
  181.  
  182. // assertion reporting:
  183.  
  184. void    AssertErr( long lineNo, char* srcName, char* reason, long val );
  185.  
  186. // ASSERT macros- handy for debugging. For "final" code, ASSERT maps to nothing so no overhead
  187. // incurred within code by the checks made.
  188. // <r> is a reason string, (C string), which is usually written as a literal- since it's only
  189. // for debugging, there is no need to use resources or pascal formatted strings.
  190. // <x> is an expression that evaluates to a Boolean. If FALSE, the assertion fails with a call
  191. // to AssertErr. If TRUE, execution continues.
  192. // The line number and file name are reported automatically, you can provide more info as you wish
  193. // in your reason message.
  194.  
  195. #if _DEBUG_
  196.  
  197. #define    ASSERT( r, x, v )        if ( !( x )) { AssertErr( __LINE__, __FILE__, r, v = 0 ); };
  198.  
  199. #else
  200. #define    ASSERT( r, x, v )
  201. #endif
  202.  
  203. #endif